跳到主要内容
版本:1.3.x

Deploy

沙箱资源部署管理器,用于本地目录部署和模板格式化。

deploy_working_dir - 部署本地目录

sandbox = Sandbox(config)
deploy = sandbox.deploy

# 部署本地目录到沙箱(自动生成目标路径)
target = await deploy.deploy_working_dir(
local_path="/path/to/local/project",
)
print(f"部署到: {target}") # 例如: /tmp/rock_workdir_abc123

# 部署到指定目标路径
target = await deploy.deploy_working_dir(
local_path="/path/to/local/project",
target_path="/root/workdir",
)

format - 模板变量替换

format 方法支持两种模板语法:

  • ${variable} - 标准 Python 字符串模板语法
  • <<variable>> - 替代语法(内部转换为 ${variable}
# 使用 ${working_dir} 模板变量
cmd = deploy.format("mv ${working_dir}/config.json /root/.app/")
# 结果: mv /tmp/rock_workdir_abc123/config.json /root/.app/

# 使用 <<>> 替代语法
cmd = deploy.format("cat <<working_dir>>/file.txt")
# 结果: cat /tmp/rock_workdir_abc123/file.txt

# 结合自定义变量使用
cmd = deploy.format(
"cat ${working_dir}/${config_file}",
config_file="settings.json"
)
# 结果: cat /tmp/rock_workdir_abc123/settings.json

# Shell 语法保持不变
cmd = deploy.format("echo $((3 << 2 >> 1))")
# 结果: echo $((3 << 2 >> 1))

# 直接访问 working_dir
if deploy.working_dir:
print(f"当前工作目录: {deploy.working_dir}")

多次部署

后续调用会覆盖之前的工作目录路径:

# 第一次部署
path1 = await deploy.deploy_working_dir(local_path="/project/v1")
print(deploy.working_dir) # /tmp/rock_workdir_xxx1

# 第二次部署(覆盖之前的路径)
path2 = await deploy.deploy_working_dir(local_path="/project/v2")
print(deploy.working_dir) # /tmp/rock_workdir_xxx2